package com.example.dynamicproxy.proxy;

import com.example.dynamicproxy.StudentServiceUp;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @version 1.0.0
 * @className: MyInvocationHandler
 * @description: 实现InvocationHandler接口，动态代理
 * @author: zhangjunfa
 * @date: 2022/6/21 10:30
 */
public class MyInvocationHandler implements InvocationHandler {
    //目标对象
    private Object obj;

    //有参构造器
    public MyInvocationHandler(Object obj) {
        this.obj = obj;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //此处的o指的是原有功能的实现类的对象（StudentServiceImpl）
        Object invoke = method.invoke(obj, args);//执行原有的功能
        StudentServiceUp.testUp();//增加新的功能(若放在method.invoke()前面则在原有功能的前面执行)
        return invoke;
    }
}
